#ifndef TRIGO_H_INCLUDED
#define TRIGO_H_INCLUDED

#include <cmath>
#include <SFML/System/Vector2.hpp>
#include <my/Config.h>

namespace my {

/**
*   @brief Approximate value of Pi
*   @return Approximate value of Pi
*/
float MYAPI Pi();

/**
*   @brief Convert an angle from degrees into radians
*   @param degrees The angle between 0 and 360 degrees
*   @return Value in radians
*/
float MYAPI toRadian(int degrees);

/**
*   @brief Convert an angle from radians into degrees
*   @param radians The angle in radians
*   @return Value in degrees
*/
int MYAPI   toDegree(float radians);

/**
*   @brief Calculate the distance between two points
*   @param x1 First point abscissa
*   @param y1 First point ordinate
*   @param x2 Second point abscissa
*   @param y2 Second point ordinate
*   @return The distance between the points
*/
float MYAPI distance(const float x1, const float y1, const float x2 = 0.f, const float y2 = 0.f);

/**
*   @brief Calculate the distance between two points
*   @param p1 First point
*   @param p2 Second point
*   @return The distance between the points
*/
float MYAPI distance(const sf::Vector2f& p1, const sf::Vector2f& p2 = sf::Vector2f(0.f, 0.f));

/**
*   @brief Calculate the angle between two vectors
*   @param a First vector
*   @param b Second vector
*   @return The angle between the two vectors
*/
float MYAPI angle(const sf::Vector2f& a, const sf::Vector2f& b = sf::Vector2f(1.f, 0.f));


}

#endif // TRIGO_H_INCLUDED
